/*
 * Copyright (c) zhg2yqq.com Corp.
 * All Rights Reserved.
 */
package com.zhg2yqq.wheels.security;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.security.core.Authentication;

/**
 * 认证信息存储处理
 *
 * @author zhg2yqq, 2023年3月17日
 * @version zhg2yqq v1.0
 */
public interface ISecurityRepository {

    /**
     * 请求删除认证信息
     *
     * @param request
     */
    void clearLoginUser(HttpServletRequest request);

    /**
     * 请求删除认证信息
     *
     * @param token 认证唯一标识
     */
    void clearLoginUser(String token);

    /**
     * 从请求获取认证信息
     *
     * @param request 请求
     * @return 认证信息
     */
    Authentication getLoginUser(HttpServletRequest request);

    /**
     * 保存认证信息
     *
     * @param request        请求
     * @param response       响应
     * @param authentication 认证信息
     * @return 认证唯一标识
     */
    String saveLoginUser(HttpServletRequest request, HttpServletResponse response,
                         Authentication authentication);

    /**
     * 创建验证码
     *
     * @return
     */
    void saveCaptcha(String uuid, String code, int ttl);

    /**
     * 获取缓存验证码
     *
     * @return
     */
    String getCaptcha(String uuid);

    /**
     * 获取缓存验证码
     *
     * @return
     */
    void clearCaptcha(String uuid);
}
